package com.aier.classes.service;

import java.util.List;
import java.util.Map;

import com.aier.classes.entity.ClassParent;
import com.aier.classes.entity.ClassStudent;
import com.aier.classes.entity.ClassTeacher;
import com.aier.school.entity.SchoolTeacher;
import com.aier.user.entity.User;

/**
 * 班级用户：教师,学生,家长
 * @author Administrator
 *
 */
public interface IClassUserService {

    //不是班级管理员
    short CLASS_TEACHER_ISADMIN_NO = 0;
    //是班级管理员
    short CLASS_TEACHER_ISADMIN_YES = 1;
    

    /**
     * 分页显示班级教师列表
     * @return
     */
    Map<String, Object> searchClassTeacherList(int page,int pagesize, Long cid);
    
    /**
     * 根据用户id和班级id查询班级教师
     * @return
     */
    ClassTeacher searchClassTeacherByIds(Long uid, Long cid);
    
    /**
     * 添加班级教师
     * @return
     */
    int insertClassTeacher(ClassTeacher classTeacher);
    
    /**
     * 删除班级教师
     * @return
     */
    int deleteClassTeacher(Long ctid);
        
    
    /**
     * 修改班级教师权限
     * @return
     */
    int updateClassTeacherState(Long ctid,Short state);
    
//=====================================================================================    
    
    /**
     * 分页显示班级学生列表
     * @return
     */
    Map<String, Object> searchClassStudentList(int page,int pagesize, Long cid);

    /**
     * 显示班级所有学生
     * @return
     */
    List<ClassStudent> searchClassStudentList(Long cid);
    
    /**
     * 查询学校里的所有学生
     * @return
     */
    List<ClassStudent> searchClassStudentListBySid(Integer sid);
    
    /**
     * 根据学生名查询班级学生
     * @return
     */
    List<ClassStudent> searchClassStudentByName(String name);
    
    /**
     * 根据班级和学生名查询班级学生
     * @return
     */
    List<ClassStudent> searchCSByCidName(Long cid,String name);
    
    /**
     * 添加班级学生
     * @return
     */
    long insertClassStudent(Long cid,String name_student,String sex);
    
    /**
     * 删除班级学生
     * @return
     */
    int deleteClassStudent(Long csid);
    
    /**
     * 根据条件查询班级学生数量
     * @return
     */
    int countClassStudentByCondition(Long uid, Long cid);
    
    /**
     * 根据学校和学生名查询班级学生
     * @return
     */
    List<ClassStudent> searchCSBySidName(Integer sid,String name);
    
    /**
     * 查询学生绑卡记录
     * @return
     */
    Map<String, Object> searchAddStuIcList(int page,int pagesize, Integer sid);
    
    /**
     * 根据学校和教师名查询教师
     * @return
     */
    List<SchoolTeacher> searchCTBySidName(Integer sid,String name);
    
    /**
     * 查询教师绑卡记录
     * @return
     */
    Map<String, Object> searchAddTeaIcList(int page,int pagesize, Integer sid);
    
//=====================================================================================    
    
    /**
     * 分页显示班级家长列表
     * @return
     */
    Map<String, Object> searchClassParentList(int page,int pagesize, Long cid);
    
    /**
     * 查询班级所有家长用户列表
     * @return
     */
    List<User> searchAllClassParentList(Long cid);
    
    /**
     * 添加班级家长
     * @return
     */
    int insertClassParent(ClassParent classParent);
    
    /**
     * 删除班级家长
     * @return
     */
    int deleteClassParent(Long cpid);
    
    /**
     * 根据宝宝用户id查询家长用户信息
     * @param buid
     * @return
     */
    List<User> searchParentByBuid(Long buid);
    
//=====================================================================================    
    
    /**
     * 查询班级所有学生
     * @return
     */
    List<ClassStudent> searchAllClassStudentList(Long cid);

    /**
     * 根据宝宝id获取宝宝所在班级的老师列表
     * @param buid
     * @return
     */
    List<ClassTeacher> searchTeacherByBuid(Long buid);

    /**
     * 根据用户id获取班级家长身份列表
     * @return
     */
    List<ClassParent> searchClassParentListByUid(Long uid);

    /**
     * 根据用户id获取班级教师身份列表
     * @return
     */
    List<ClassTeacher> searchClassTeacherListByUid(Long uid);
    
    /**
     * 根据条件查询班级家长信息
     * @param uid
     * @param cid
     * @param csid
     * @return
     */
    List<ClassParent> searchCPByCondition(Long uid,Long cid,Long csid);

    
//=====================================================================================    
    
    /**
     * 删除用户的某班级家长身份
     */
    int deleteParentClass(Long uid, Long cid);

    /**
     * 删除用户的某班级教师身份
     */
    int deleteTeacherClass(Long uid, Long cid);

    /**
     * 根据宝宝uid查询班级学生id
     * @return
     */
    ClassStudent searchClassStudentByBuid(Long buid);
    
    /**
     * 查询家长 学校id
     * @return
     */
    List<ClassParent> searchClassParentListSid_account(Integer sid);

    /**
     * 查询家长 班级id列表
     * @return
     */
    List<ClassParent> searchClassParentListCidList_account(List<Long> cidList);

    /**
     * 根据家长和宝宝查询用户信息
     * @param parent_uid
     * @param baby_uid
     * @return
     */
    User searchBabyByUid(Long parent_uid,Long baby_uid);
    
    /**
     * 根据班级id查询学校的付费方式
     * @param sid
     * @return
     */
    int searchSchoolBuyMethodByCid(Long cid);
    
    // 新版
    /**
     * 查询公告已阅列表
     * @param mid
     * @return
     */
    List<ClassStudent> searchCSByCondition(Long mid);

    /**
     * 根据条件查询班级家长信息
     * @param cid
     * @param csid
     * @return
     */
    List<ClassParent> searchCPByCondition(Long cid,Long csid);
    
    /**
     * 查询本月缺勤达人榜
     * @param month
     * @return
     */
    List<ClassStudent> searchCSAbsentByMonth(Long cid,String month);
    
    /**
     * 查询班级管理员
     * @param cid
     * @return
     */
    List<ClassTeacher> searchClassAdminTeacher(Long cid);
    
    

    // 新版
    /**
     * 查询班级的家长列表
     * @param cid
     * @return
     */
    List<ClassStudent> searchClassParentApp(Long cid);
    Map<String, Object> searchClassStudent(int page,int pagesize, Long cid);
    
    /**
     * 查询班级教师列表
     * @return
     */
    List<ClassTeacher> searchClassTeacherListApp(Long cid);
    
    /**
     * 查询班级家长数量
     * @return
     */
    int searchClassParentCount(Long cid);
    
    /**
     * 修改班级学生姓名
     * @param csid
     * @param name
     * @return
     */
    int updateClassStudentName(Long csid,String name);
    
    /**
     * 修改宝宝性别
     * @param uid
     * @param sex
     * @return
     */
    int updateClassStudentSex(Long uid,String sex);
}
